﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using App.UI.Auxiliares;
using CMS.Data.Repositorios;
using CMS.Data.Classes;

namespace App.UI.Adm
{
    public partial class CadastroImoveis : System.Web.UI.Page
    {
        Metodos metodos = new Metodos();

        PessoaRepository pessoaRepository = new PessoaRepository();
        ImovelRepository imovelRepository = new ImovelRepository();
        EstadoRepository estadoRepository = new EstadoRepository();
        CidadeRepository cidadeRepository = new CidadeRepository();
        BairroRepository bairroRepository = new BairroRepository();
        RegiaoRepository regiaoRepository = new RegiaoRepository();
        TipoImovelRepository tipoImovelRepository = new TipoImovelRepository();
        StatusRepository statusRepository = new StatusRepository();
        TipoNegocioRepository tipoNegocioRepository = new TipoNegocioRepository();
        RuaRepository ruaRepository = new RuaRepository();


        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

                CarregarDropDownList();

                if (!String.IsNullOrEmpty(Request.QueryString["ImovelId"]))
                    CarregarPagina();

            }
        }

        private void CarregarDropDownList()
        {
            List<Estado> lstEstado = estadoRepository.SelectAll().ToList();

            ddlEstado.DataSource = lstEstado;
            ddlEstado.DataBind();
            ddlEstado.Items.Insert(0, new ListItem("Selecione um Estado", "0"));

            List<Regiao> lstRegiao = regiaoRepository.SelectAll().ToList();

            ddlRegiao.DataSource = lstRegiao;
            ddlRegiao.DataBind();
            ddlRegiao.Items.Insert(0, new ListItem("Selecione uma Região", "0"));

            ddlBairro.Items.Insert(0, new ListItem("Selecione um Bairro", "0"));
            ddlCidade.Items.Insert(0, new ListItem("Selecione uma Cidade", "0"));
            ddlRua.Items.Insert(0, new ListItem("Selecione uma Rua", "0"));

            List<TipoImovel> lstTipoImovel = tipoImovelRepository.SelectAll().ToList();
            ddlTipoImovel.DataSource = lstTipoImovel;
            ddlTipoImovel.DataBind();
            ddlTipoImovel.Items.Insert(0, new ListItem("Selecione um Tipo de Imóvel", "0"));

            List<Status> lstStatus = statusRepository.SelectAll().ToList();
            ddlStatus.DataSource = lstStatus;
            ddlStatus.DataBind();
            ddlStatus.Items.Insert(0, new ListItem("Selecione um Status", "0"));

            List<TipoNegocio> lstTipoNegocio = tipoNegocioRepository.SelectAll().ToList();
            ddlTipoNegocio.DataSource = lstTipoNegocio;
            ddlTipoNegocio.DataBind();
            ddlTipoNegocio.Items.Insert(0, new ListItem("Selecione um Tipo de Negócio", "0"));

            List<Pessoa> lstPessoa = pessoaRepository.SelectAll().ToList();
            ddlPessoa.DataSource = lstPessoa;
            ddlPessoa.DataBind();
            ddlPessoa.Items.Insert(0, new ListItem("Selecione um Proprietário", "0"));
        }

        private void CarregarPagina()
        {
            int Id = Request.QueryString["ImovelId"].ToInt();

            Imovel Imovel = imovelRepository.SelectById(Id);

            if (Imovel != null)
            {
              
                txtNCasa.Text = Imovel.NImovel.ToString();
                txtValorImovel.Text = Imovel.ValorImovel.ToString();

                ddlEstado.SelectedValue = Imovel.Rua.Bairro.Cidade.Estado_ID.ToString();

              
                List<Cidade> lstCidade = cidadeRepository.SelectAll().Where(x => x.Estado_ID == Imovel.Rua.Bairro.Cidade.Estado.Estado_ID).ToList();

                ddlCidade.DataSource = lstCidade;
                ddlCidade.DataBind();
                ddlCidade.Items.Insert(0, new ListItem("Selecione uma Cidade", "0"));

                ddlCidade.SelectedValue = Imovel.Rua.Bairro.Cidade_ID.ToString();
                ddlRegiao.SelectedValue = Imovel.Rua.Bairro.Regiao_ID.ToString();

                if (ddlCidade.SelectedIndex != 0 && ddlRegiao.SelectedIndex != 0)
                {
                    List<Bairro> lstBairro = bairroRepository.SelectAll().Where(x => x.Regiao_ID == ddlRegiao.SelectedValue.ToInt() && x.Cidade_ID == ddlCidade.SelectedValue.ToInt()).ToList();

                    ddlBairro.DataSource = lstBairro;
                    ddlBairro.DataBind();
                    ddlBairro.Items.Insert(0, new ListItem("Selecione um Bairro", "0"));
                }

                ddlBairro.SelectedValue = Imovel.Rua.Bairro_ID.ToString();

                if (ddlBairro.SelectedIndex != 0)
                {
                    List<Rua> lstRua = ruaRepository.SelectAll().Where(x => x.Bairro_ID == ddlBairro.SelectedValue.ToInt()).ToList();

                    ddlRua.DataSource = lstRua;
                    ddlRua.DataBind();
                    ddlRua.Items.Insert(0, new ListItem("Selecione uma Rua", "0"));
                }

                ddlRua.SelectedValue = Imovel.Rua_ID.ToString();
                ddlPessoa.SelectedValue = Imovel.Pessoa_ID.ToString();
                ddlStatus.SelectedValue = Imovel.Status_ID.ToString();
                ddlTipoImovel.SelectedValue = Imovel.TipoImovel_ID.ToString();
                ddlTipoNegocio.SelectedValue = Imovel.TipoNegocio_ID.ToString();
            }
        }

        #region Save Method's

        protected void btnSalvar_Click(object sender, EventArgs e)
        {
            try
            {

                Imovel obj = Salvar();

                if (!String.IsNullOrEmpty(Request.QueryString["ImovelId"]))
                {
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "notify", "SuccessUpdate();", true);
                }
                else
                {
                    LimparCampos();
                    ScriptManager.RegisterClientScriptBlock(this, GetType(), "notify", "Success();", true);
                }
            }
            catch
            {
                ScriptManager.RegisterClientScriptBlock(this, GetType(), "notify", "Failed();", true);
            }
        }

        private Imovel Salvar()
        {
            if (metodos.ValidarLogin() == null)
                Response.Redirect("Login.aspx");

            Imovel obj = new Imovel();

            if (!String.IsNullOrEmpty(Request.QueryString["ImovelId"]))
            {
                int Id = Request.QueryString["ImovelId"].ToInt();

                if (Id > 0)
                    obj = imovelRepository.SelectById(Id);
            }



            obj.ValorImovel = txtValorImovel.Text;
            obj.NImovel = txtNCasa.Text.ToInt();
            obj.Rua_ID = ddlRua.SelectedValue.ToInt();
            obj.Pessoa_ID = ddlPessoa.SelectedValue.ToInt();
            obj.Status_ID = ddlStatus.SelectedValue.ToInt();
            obj.TipoImovel_ID = ddlTipoImovel.SelectedValue.ToInt();
            obj.TipoNegocio_ID = ddlTipoNegocio.SelectedValue.ToInt();

           imovelRepository.Save(obj);



            return obj;

        }

        #endregion

        #region PageHelp Method's

        private void LimparCampos()
        {
          
            txtNCasa.Text = "";
            txtValorImovel.Text = "";
            ddlBairro.SelectedIndex = 0;
            ddlCidade.SelectedIndex = 0;
            ddlEstado.SelectedIndex = 0;
            ddlRegiao.SelectedIndex = 0;
            ddlRua.SelectedIndex = 0;

        }




        #endregion

        protected void ddlEstado_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlEstado.SelectedIndex != 0)
            {
                List<Cidade> lstCidade = cidadeRepository.SelectAll().Where(x => x.Estado_ID == ddlEstado.SelectedValue.ToInt()).ToList();

                ddlCidade.DataSource = lstCidade;
                ddlCidade.DataBind();
                ddlCidade.Items.Insert(0, new ListItem("Selecione uma Cidade", "0"));
            }
        }

        protected void ddlCidade_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlCidade.SelectedIndex != 0 && ddlRegiao.SelectedIndex != 0)
            {
                List<Bairro> lstBairro = bairroRepository.SelectAll().Where(x => x.Regiao_ID == ddlRegiao.SelectedValue.ToInt() && x.Cidade_ID == ddlCidade.SelectedValue.ToInt()).ToList();

                ddlBairro.DataSource = lstBairro;
                ddlBairro.DataBind();
                ddlBairro.Items.Insert(0, new ListItem("Selecione um Bairro", "0"));
            }
        }

        protected void ddlRegiao_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlCidade.SelectedIndex != 0 && ddlRegiao.SelectedIndex != 0)
            {
                List<Bairro> lstBairro = bairroRepository.SelectAll().Where(x => x.Cidade_ID == ddlCidade.SelectedValue.ToInt() && x.Regiao_ID == ddlRegiao.SelectedValue.ToInt()).ToList();

                ddlBairro.DataSource = lstBairro;
                ddlBairro.DataBind();
                ddlBairro.Items.Insert(0, new ListItem("Selecione um Bairro", "0"));
            }
        }

        protected void ddlBairro_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (ddlBairro.SelectedIndex != 0)
            {
                List<Rua> lstRua = ruaRepository.SelectAll().Where(x => x.Bairro_ID == ddlBairro.SelectedValue.ToInt()).ToList();

                ddlRua.DataSource = lstRua;
                ddlRua.DataBind();
                ddlRua.Items.Insert(0, new ListItem("Selecione uma Rua", "0"));
            }
        }


    }
}